package co.edu.uniandes.truequeAndes.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import co.edu.uniandes.truequeAndes.dao.ConsultaDAO;
import co.edu.uniandes.truequeAndes.fachada.TruequeAndes;
import co.edu.uniandes.truequeAndes.vos.ValueRF2;

public class ServletR2 extends ServletTemplate
{


    // -----------------------------------------------------------------
    // M�todos
    // -----------------------------------------------------------------

    /**
	 * serial
	 */
	private static final long serialVersionUID = 1L;

	/**
     * Devuelve el t�tulo de la p�gina para el Header
     * @param request Pedido del cliente
     * @return T�tulo de la p�gina para el Header
     */
    public String darTituloPagina( HttpServletRequest request )
    {
        return "Resultados de B�squeda";
    }

    /**
     * Devuelve el nombre de la imagen para el t�tulo de la p�gina en el Header
     * @param request Pedido del cliente
     * @return Nombre de la imagen para el t�tulo de la p�gina en el Header
     */
    public String darImagenTitulo( HttpServletRequest request )
    {
    	
        return "uniandes.png";
    }

    /**
     * Escribe el contenido de la p�gina
     * @param request Pedido del cliente
     * @param response Respuesta
     * @throws IOException Excepci�n de error al escribir la respuesta
     */
    public void escribirContenido( HttpServletRequest request, HttpServletResponse response ) throws IOException
    {
        
        // Saca el Printer
        PrintWriter respuesta = response.getWriter( );
        try
        {
        	//TODO
            // Saca los par�metros de la b�squeda
        	TruequeAndes trueque= TruequeAndes.darInstancia();
        	ConsultaDAO dao= trueque.dao;
        	dao.inicializar();
        	
        	
        	String categoria= (String)request.getParameter("categoriaR2");
        	String porNombre = (String) request.getParameter("tipoR2");
            String ordenA= (String) request.getParameter("ordenR2");
      
       
            
            if (porNombre.equals("nombreR2"))
            {
            	if (ordenA.equals("ascendenteR2"))
            	{
            		Collection <ValueRF2> values=trueque.dao.Requerimiento2(categoria,true,"nombre" );
            		ArrayList<ValueRF2> clientes=new ArrayList<ValueRF2>(values);  
            		System.out.println(clientes.size());
            		respuesta.println( "                      <table border=\"1\" width=\"543\" id=\"table5\" style=\"border-collapse: collapse\">" );
                      respuesta.println( "                          <tr>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>T�tulo</b></font></td>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>A�o</b></font></td>" );
                      respuesta.println( "                          </tr>" );
                      //
                      // Imprime los resultados
                      for( int i = 0; i < clientes.size( ); i++ )
                      {
                          ValueRF2 cliente = clientes.get( i );
                          respuesta.println( "                          <tr>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getNombre()+ "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getCantidad() + "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getValor() + "</td>" );
                          respuesta.println( "                              <td width=\"25\" align=\"center\">" );
                       
                          respuesta.println( "                          </tr>" );
                                      
                      }
                      respuesta.println( "                      </table>" );
            	}
            	
            	else
            	{
            	
            		Collection <ValueRF2> values=trueque.dao.Requerimiento2(categoria,false,"nombre");
            		ArrayList<ValueRF2> clientes=new ArrayList<ValueRF2>(values);  
            		
            		respuesta.println( "                      <table border=\"1\" width=\"543\" id=\"table5\" style=\"border-collapse: collapse\">" );
                      respuesta.println( "                          <tr>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>T�tulo</b></font></td>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>A�o</b></font></td>" );
                      respuesta.println( "                          </tr>" );
                      //
                      // Imprime los resultados
                      for( int i = 0; i < clientes.size( ); i++ )
                      {
                          ValueRF2 cliente = clientes.get( i );
                          respuesta.println( "                          <tr>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getNombre()+ "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getCantidad() + "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getValor() + "</td>" );
                          respuesta.println( "                              <td width=\"25\" align=\"center\">" );
                       
                          respuesta.println( "                          </tr>" );
                                      
                      }
                      respuesta.println( "                      </table>" );
            	}
            }
            else if (porNombre.equals("valorR2"))
            {
            	if (ordenA.equals("ascendenteR2"))
            	{
            		Collection <ValueRF2> values=trueque.dao.Requerimiento2(categoria, true,"valor_Estimado");
            		ArrayList<ValueRF2> clientes=new ArrayList<ValueRF2>(values);  
            		
            		respuesta.println( "                      <table border=\"1\" width=\"543\" id=\"table5\" style=\"border-collapse: collapse\">" );
                      respuesta.println( "                          <tr>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>T�tulo</b></font></td>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>A�o</b></font></td>" );
                      respuesta.println( "                          </tr>" );
                      //
                      // Imprime los resultados
                      for( int i = 0; i < clientes.size( ); i++ )
                      {
                          ValueRF2 cliente = clientes.get( i );
                          respuesta.println( "                          <tr>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getNombre()+ "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getCantidad() + "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getValor() + "</td>" );
                          respuesta.println( "                              <td width=\"25\" align=\"center\">" );
                       
                          respuesta.println( "                          </tr>" );
                                      
                      }
                      respuesta.println( "                      </table>" );
            	}
            	else
            	{
            		Collection <ValueRF2> values=trueque.dao.Requerimiento2(categoria, false,"valor_Estimado");
            		ArrayList<ValueRF2> clientes=new ArrayList<ValueRF2>(values);  
            		
            		respuesta.println( "                      <table border=\"1\" width=\"543\" id=\"table5\" style=\"border-collapse: collapse\">" );
                      respuesta.println( "                          <tr>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>T�tulo</b></font></td>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>A�o</b></font></td>" );
                      respuesta.println( "                          </tr>" );
                      //
                      // Imprime los resultados
                      for( int i = 0; i < clientes.size( ); i++ )
                      {
                          ValueRF2 cliente = clientes.get( i );
                          respuesta.println( "                          <tr>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getNombre()+ "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getCantidad() + "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getValor() + "</td>" );
                          respuesta.println( "                              <td width=\"25\" align=\"center\">" );
                       
                          respuesta.println( "                          </tr>" );
                                      
                      }
                      respuesta.println( "                      </table>" );
            		
            	}
            }
            else if (porNombre.equals("ofertasR2"))
            {
            	if (ordenA.equals("ascendenteR2"))
            	{
            		Collection <ValueRF2> values=trueque.dao.Requerimiento2(categoria, true,"ofertas");
            		ArrayList<ValueRF2> clientes=new ArrayList<ValueRF2>(values);  
            		
            		respuesta.println( "                      <table border=\"1\" width=\"543\" id=\"table5\" style=\"border-collapse: collapse\">" );
                      respuesta.println( "                          <tr>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>T�tulo</b></font></td>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>A�o</b></font></td>" );
                      respuesta.println( "                          </tr>" );
                      //
                      // Imprime los resultados
                      for( int i = 0; i < clientes.size( ); i++ )
                      {
                          ValueRF2 cliente = clientes.get( i );
                          respuesta.println( "                          <tr>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getNombre()+ "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getCantidad() + "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getValor() + "</td>" );
                          respuesta.println( "                              <td width=\"25\" align=\"center\">" );
                       
                          respuesta.println( "                          </tr>" );
                                      
                      }
                      respuesta.println( "                      </table>" );
            	}
            	else
            	{
            		Collection <ValueRF2> values=trueque.dao.Requerimiento2(categoria, false,"ofertas");
            		ArrayList<ValueRF2> clientes=new ArrayList<ValueRF2>(values);  
            		
            		respuesta.println( "                      <table border=\"1\" width=\"543\" id=\"table5\" style=\"border-collapse: collapse\">" );
                      respuesta.println( "                          <tr>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>T�tulo</b></font></td>" );
                      respuesta.println( "                              <td width=\"106\" align=\"center\" bgcolor=\"#707070\">" );
                      respuesta.println( "                              <font color=\"#FFFFFF\"><b>A�o</b></font></td>" );
                      respuesta.println( "                          </tr>" );
                      //
                      // Imprime los resultados
                      for( int i = 0; i < clientes.size( ); i++ )
                      {
                          ValueRF2 cliente = clientes.get( i );
                          respuesta.println( "                          <tr>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getNombre()+ "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getCantidad() + "</td>" );
                          respuesta.println( "                              <td width=\"71\" align=\"center\">" + cliente.getValor() + "</td>" );
                          respuesta.println( "                              <td width=\"25\" align=\"center\">" );
                       
                          respuesta.println( "                          </tr>" );
                                      
                      }
                      respuesta.println( "                      </table>" );
            	}
          
            
            	dao.closeConnection(dao.darConexion());
            }
            
       
            
           
  
        }
        catch( Exception e )
        {
            //
            // Imprime el mensaje de la excepci�n
            imprimirMensajeError( respuesta, "Error al buscar clientes.", "Excepci�n generada en la operaci�n", e );
        }
    }

  
    
}
